// 1.引入express模块
const express = require('express');
const { appendFile } = require('fs');
const { send } = require('process');

// 2.引入连接池模块
const pool = require('../pool.js')

// 3.因为要打包暴露出去,所以要创建一个路由对象
const router = express.Router();

/*******************接口逻辑******************/
//接口1:用户快速注册
//请求方法:post
//后台请求地址:/quick_reg
//前台访问地址:/user/quick_reg
//需要获取请求:req.query
//需要对数据库进行“插入”
//sql:`insert into user set phone = ?;`因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.post('/quick_reg', (req, res, next) => {
    var obj = req.body;
    console.log(obj);
    pool.query('insert into user set phone = ?;', [obj.phone], (err, data) => {
        if (err) { next(err); return; }
        if (data.affectedRows) {
            res.send({
                code: 200,
                msg: '注册成功',
                result: data
            })
        } else {
            res.send({
                code: '400',
                msg: '注册失败'
            })
        }
    })
})


//接口2:用户登录
//请求方法:post
//后台请求地址:/login
//前台访问地址:/user/login
//需要获取请求:req.body
//需要对数据库进行“查询”
//sql:`select * from user where uname = ?;`因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.post('/login', (req, res, next) => {
    var obj = req.body;
    console.log(obj);
    // console.log(obj.uname);
    pool.query('select * from user where uname = ? and upwd = ?;', [obj.uname, obj.upwd], (err, data) => {
        if (err) { next(err); return; }
        // console.log(data.length);
        if (data.length) {
            res.send({
                code: 201,
                msg: '登录成功',
                result: data
            })
        } else {
            res.send({
                code: 401,
                msg: '用户名或密码错误'
            })
        }
    })
})

/*******************接口逻辑******************/
//接口1:获取购物车内的商品信息
//请求方法:post
//后台请求地址:/cart
//前台访问地址:/user/cart
//需要获取请求:req.query
//需要对数据库进行“插入”
//sql:`select * from product where pid in (select product_id from shopping_cart where user_id = ?);`因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.post('/cart', (req, res, next) => {
    var obj = req.body;
    console.log(obj);
    pool.query('select * from product where pid in (select product_id from shopping_cart where user_id = ?)', [obj.user_id], (err, data) => {
        if (err) { next(err); return; }
        if (data.length) {
            res.send({
                code: 202,
                msg: '成功获取该用户的购物车数据',
                result: data
            })
        } else {
            res.send({
                code: 402,
                msg: '获取该用户的购物车数据失败'
            })
        }
    })
})


/*******************接口逻辑******************/
//接口4:获取用户id
//请求方法:post
//后台请求地址:/uid
//前台访问地址:/user/uid
//需要获取请求:req.body
//需要对数据库进行“插入”
//sql:`select uid from user where uname = ?;`因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.post('/uid', (req, res, next) => {
    var obj = req.body;
    console.log(obj);
    pool.query('select uid from user where uname = ?;', [obj.uname], (err, data) => {
        if (err) { next(err); return; }
        if (data.length) {
            res.send({
                code: 203,
                msg: '成功查询到用户id',
                result: data
            })
        } else {
            res.send({
                code: '403',
                msg: '查询id失败'
            })
        }
    })
})


/*******************接口逻辑******************/
//接口5:获取用户信息
//请求方法:get
//后台请求地址:/uinform
//前台访问地址:/user/uinform
//需要获取请求:req.query
//需要对数据库进行“插入”
//sql:`select * from user where uid = ?;`因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.get('/uinform', (req, res, next) => {
    var obj = req.query;
    console.log(obj);
    pool.query('select * from user where uid = ?;', [obj.uid], (err, data) => {
        if (err) { next(err); return; }
        if (data.length) {
            res.send({
                code: 204,
                msg: '成功查询到该用户的信息',
                result: data
            })
        } else {
            res.send({
                code: '404',
                msg: '查询信息失败'
            })
        }
    })
})


// router.get('/data', (req, res, next) => {
//     var obj = req.query;
//     console.log(obj);
//     res.send(getdata);
// });


// 4.暴露路由(user)对象
module.exports = router;